一、元素标签分类
在html5中,元素标签主要分成三大块,分别是块级(block)标签、行内(inline)标签和行内块(inline-block)标签。
块级(block)标签
- 块级(block)标签主要包含
div、p、h1、h2...
等标签 - 布局格式为独占一行
- 在盒子模型上,设置所有的属性都会有效
行内(inline)标签
- 内联(inline)标签主要包含有
span、a、strong
等标签 - 布局格式是能够与其他元素在同一行上
- 盒子模型上,不可以设置
width
和height
,是靠内容撑开,并且padding-top,padding-bottom,margin-top,margin-bottom
不会对其他元素造成影响。
行内块(inline-block)标签
- 主要包含
img、input、textarea
标签 - 行内块标签可以与其他元素独占一行
- 盒子模型也支持设置所有属性,集成行内和块级标签的优点。
二、link标签和@import的区别
- 从属性关系区别。@import是CSS提供的语法规则,只有导入样式的左右。而link是html的标签,不仅可以加载CSS文件,还可以定义RSS、rel连接属性、引入网站图标等。
- 加载顺序区别。加载页面时,link标签引入的CSS被同时加载;@import引入的CSS将在页面加载完毕后被加载。
- 兼容性区别。@import是CSS2.1后才有的语法,link标签是HTML元素,不存在兼容性问题。
- DOM可控性区别。link可以通过DOM操作来改变样式,@import则无法通过DOM操作。
重绘和回流
重绘:当渲染树中的一些元素需要更新属性,这些属性只会影响元素的外观、风格,而不会影响布局,如background-color
;回流:当渲染树中的一部分(或全部)因为元素的规模尺寸、布局、隐藏等改变而需要重新构建的操作,会影响到布局。重绘不一定会引发回流,但是回流必定会发生重绘。
常见的回流
- 添加/删除DOM
- 元素尺寸改变
- 内容变化,如在input输入文字
- 浏览器窗口尺寸改变,resize事件发生时
- 计算offsetWidth和offsetHeight时
- 设置style属性的值
- 修改默认字体。
用visibility与dispaly控制元素的显示与隐藏有什么差别
- visibility隐藏后还会在文档上留着位置,而display: none不会。
- visibility只会重绘,而display会引发回流。
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章